﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using TechControl.BD;
using System.Collections;

namespace TechControl.Presentation
{
    public partial class frm_listaEquipamento : frm_default
    {
        BindingSource bs = new BindingSource();

        public frm_listaEquipamento()
        {
            InitializeComponent();
        }

        //fecha form
        private void bt_voltar_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        private void frm_listaEquipamento_Load(object sender, EventArgs e)
        {
            ck_ftStatus.Checked = true;
            loadDadosOnGrid();
        }

        //método responsável por popular o dataGrid.
        public void loadDadosOnGrid()
        {
            BaseDB ba = new BaseDB();
            try
            {
                ba.open();

                SqlCommand command = new SqlCommand("Select * from tb_equipamento", ba.conn);
                //cria um adapter para preencher um data set.
                SqlDataAdapter da = new SqlDataAdapter(command);
                //define um objeto dataSet
                DataSet ds = new DataSet();
                da.Fill(ds);

                //atribui o dataset ao DataSource do BindingSource
                bs.DataSource = ds;

                //atribui o BindingSource ao BindingNavigator
                bs.DataMember = ds.Tables[0].TableName;

                //Atribui o BindingSource ao DataGridView
                dg_listaEquipamento.DataSource = bs;
            }
            catch (Exception)
            {
                MessageBox.Show("Não foi possivél carregar os dados!", "Erro");
            }
            finally
            {
                ba.close();
            }
        }

        //habilita filtro2
        private void ck_ftValor_Click(object sender, EventArgs e)
        {
            gb_filtro1.Enabled = false;
            ck_ftStatus.Checked = false;
            gb_filtro2.Enabled = true;
            ck_ftValor.Checked = true;
        }

        //habilita filtro 1
        private void ck_ftStatus_Click(object sender, EventArgs e)
        {
            gb_filtro2.Enabled = false;
            ck_ftValor.Checked = false;
            gb_filtro1.Enabled = true;
            ck_ftStatus.Checked = true;
        }

        //desativa combo de modelo.
        private void rdb_marca_CheckedChanged(object sender, EventArgs e)
        {
            cbo_marca.Items.Clear();
            cbo_modelo.Enabled = false;
            cbo_marca.Enabled = true;

            ArrayList resultado = MarcaDB.getInstance().selectAllMarcas();
            for (int i = 0; i < resultado.Count; i++)
            {
                cbo_marca.Items.Add(resultado[i].ToString());
            }
        }

        //desaativa combo de marca.
        private void rdb_modelo_CheckedChanged(object sender, EventArgs e)
        {
            cbo_modelo.Items.Clear();
            cbo_marca.Enabled = false;
            cbo_modelo.Enabled = true;

            ArrayList resultado = ModeloDB.getInstance().selectAllModelos();
            for (int i = 0; i < resultado.Count; i++)
            {
                cbo_modelo.Items.Add(resultado[i].ToString());
            }
        }

        //chama método que efetua o filtro.
        private void bt_filtrar_Click(object sender, EventArgs e)
        {
            executeFiltro();
        }

        //método que efetua o filtro.
        private void executeFiltro()
        {
            if (ck_ftStatus.Checked == true)
            {
                if (rbd_todos.Checked == true)
                {
                    bs.RemoveFilter();
                }

                else if (rdb_ativos.Checked == true)
                {
                    bs.Filter = "status like '%ATIVO%'";
                }

                else if (rdb_sucata.Checked == true)
                {
                    bs.Filter = "status like '%SUCATA%'";
                }

                else if (rdb_excluido.Checked == true)
                {
                    bs.Filter = "status like '%EXCLUIDO%'";
                }

                else
                {
                    bs.Filter = "status like '%MANUTENÇÃO%'";
                }
            }
            else if (ck_ftValor.Checked == true)
            {
                if (rdb_marca.Checked == true)
                {
                    if (cbo_marca.SelectedItem != null)
                    {
                        string[] separa = cbo_marca.SelectedItem.ToString().Split('='); 
                        bs.Filter = "marca like '%" + separa[1]+ "%'";
                    }
                    else
                    {
                        MessageBox.Show("Selecione uma Marca para filtrar", "Filtro por marca");
                    }
                }
                else
                {
                    if(cbo_modelo.SelectedItem != null)
                    {
                        string[] separa = cbo_modelo.SelectedItem.ToString().Split('=');
                        bs.Filter = "modelo like '%" +separa[1]+ "%'";
                    }
                    else
                    {
                        MessageBox.Show("Selecione um Modelo para filtrar", "Filtro por modelo");
                    }
                }
            }
        }

        //chama formulário de inclusão de novo Equipamento.
        private void bt_incluir_Click(object sender, EventArgs e)
        {
            frm_cadEquipamento cadEquipemanto = new frm_cadEquipamento(this);
            cadEquipemanto.showForm(this);
        }

        //chama formulário de alteração de items.
        private void bt_alterar_Click(object sender, EventArgs e)
        {
            Int64 cod = Int64.Parse(dg_listaEquipamento.CurrentRow.Cells[0].Value.ToString());
            frm_altEquipamento altEquipamento = new frm_altEquipamento(this, cod);
            altEquipamento.showForm(this);
        }

        //exclui o item....mudando seu status para descontinuado.
        private void bt_excluir_Click(object sender, EventArgs e)
        {
            if (dg_listaEquipamento.SelectedRows == null)
            {
                MessageBox.Show("Selecione uma linha para efetuar uma ação!", "Aviso");
                dg_listaEquipamento.Focus();
            }
            else
            {
                var resultado = MessageBox.Show("Deseja realmente excluir o Equipamento?", "Excluir Equipamento", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (resultado == DialogResult.Yes)
                {
                    Int64 cod = Int64.Parse(dg_listaEquipamento.CurrentRow.Cells[0].Value.ToString());
                    EquipamentoDB.getInstance().updateDescEquip(cod);
                    MessageBox.Show("Item excluido com sucesso!", "Excluir Equipamento");
                    loadDadosOnGrid();
                }
                else
                {
                    dg_listaEquipamento.Focus();
                }
            }
        }
    }
}
